﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Datos.Entidades;
using Datos.Fabricas;
using Datos.Interfaces;
using System.Data.SqlClient;
using Datos.Entidades.FabricaEntidades;
using log4net;

namespace Datos.DAOSqlServer
{
    public class DAOSqlAccesoXML:IDAOAccesoXML
    {
         #region Logger
        private static readonly ILog log = LogManager.GetLogger(
        System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);





        #endregion 
        
       IDAOAccesoConexion bd = FabricaConexion.DAOSqlServerAccesoConexion();

       public DAOSqlAccesoXML()
       {
           log.Info("Conexion DAOSqlAccesoXML");
       }


        /// <summary>
        ///Selec todos lo en la base de datos
        /// </summary>
        /// <param name="participante">Participante a insertar</param>
        /// <returns>Si la creación fue exitosa o no</returns>
       public List<Entidad> BuscarParticipanteXML(int id)
       {
           SqlCommand command = new SqlCommand();
           try
           {
               bd.AbrirConexionBd();
               command.Connection = bd.ObjetoConexion();
               command.CommandType = System.Data.CommandType.StoredProcedure;
               command.CommandText = "[dbo].[SELHistorialParticipante]";
               command.CommandTimeout = 10;
               command.Parameters.AddWithValue("@id", id);
               SqlDataReader reader = command.ExecuteReader();
               List<Entidad> miLista = new List<Entidad>();
               Entidad Historialparticipante = FabricaEntidades.ObtenerHistorialParticipante();
               while (reader.Read())
               {

                   (Historialparticipante as HistorialParticipante).IdParticipante1 = (reader.GetInt32(0));
                   (Historialparticipante as HistorialParticipante).NombreParticipante1 = (reader["Nombre"] as String);
                   (Historialparticipante as HistorialParticipante).Posicion = (reader.GetInt32(4));
                   (Historialparticipante as HistorialParticipante).RelacionPago = (reader.GetInt32(3));
                   (Historialparticipante as HistorialParticipante).Puntos = (reader.GetInt32(5));
                   (Historialparticipante as HistorialParticipante).TopeApuesta1 = (reader.GetInt32(2));

                   (Historialparticipante as HistorialParticipante).IdEvento1 = (reader.GetInt32(6));
                   (Historialparticipante as HistorialParticipante).NombreEvento1 = (reader["NombreEvento"] as String);
                   (Historialparticipante as HistorialParticipante).IdCategoria = (reader.GetInt32(8));
                   (Historialparticipante as HistorialParticipante).NombreCategoria1 = (reader["NombreCategoria"] as String);
                   (Historialparticipante as HistorialParticipante).Tipocate = (reader.GetInt32(10));
                   miLista.Add(Historialparticipante);
               } log.Info("Se genero la consulta");
               reader.Close();
               bd.CerrarConexionBd();
               return miLista;

           }
           catch (SqlException)
           {
               log.Error("no se genero la consulta");
               bd.CerrarConexionBd();
               return null;
           }
           catch (Exception)
           {
               log.Error("Error en la aplicacion");

               bd.CerrarConexionBd();
               return null;
           }
       }
    }
}
